function bubbleSort(array) {
    // 记录最后一次交换的位置
    let lastExchangeIndex = 0;
    // 无序数列的边界，每次比较只需要比到这里为止
    let sortBorder = array.length - 1; // 2

    for (var i = 0; i < array.length; i++) {
        // 有序标记，每一轮的初始值都是true
        let isSorted = true;
        for (var j = 0; j < sortBorder; j++) {
            let temp = 0;
            if (array[j] > array[j+1]) {
                temp = array[j];
                array[j] = array[j+1];
                array[j+1] = temp;
                // 因为元素进行交换，所以不是有序的，标记变为false
                isSorted = false;
                // 更新为最后一次交换元素的位置
                lastExchangeIndex = j;
            }
        }
        sortBorder = lastExchangeIndex;
        if (isSorted) break;
    }
    return array;
}

const array = [3,4,2,1,5,6,7,8];
const mySort = bubbleSort(array);

console.log(mySort);